En el pasado, ya hemos revisado varias características de las series de tiempo. La paquetería feasts (Feature Extraction And Statistics from Time Series) incluye varias funciones para calcular varias características. Cualquier tipo de resumen que le podamos realizar a una serie de tiempo se consideraría una característica.
Características estadísticas básicas
Algunas de las más sencillas son la media, mínimo, máximo, … y las podemos calcular utilizando la función features(). Tomemos de ejemplo los datos del turismo en Australia, tourism.
library("easypackages")
packages("tidyverse","lubridate", "patchwork", "fpp2","fpp3","scales","DT")
glimpse(tourism)
Rows: 24,320
Columns: 5
Key: Region, State, Purpose [304]
$ Quarter <qtr> 1998 Q1, 1998 Q2, 1998 Q3, 1998 Q4, 1999 Q1, 1999 Q2, 1999 Q3,...
$ Region <chr> "Adelaide", "Adelaide", "Adelaide", "Adelaide", "Adelaide", "A...
$ State <chr> "South Australia", "South Australia", "South Australia", "Sout...
$ Purpose <chr> "Business", "Business", "Business", "Business", "Business", "B...
$ Trips <dbl> 135.0777, 109.9873, 166.0347, 127.1605, 137.4485, 199.9126, 16...
tourism %>% features(Trips, list(Promedio = mean))
La paquetería DT nos permite crear datatables o tablas interactivas.
tourism %>%
features(Trips, list(mean =mean)) %>%
datatable(filter = "top",
style = "bootstrap")
Si tenemos variables categóricas (factors), podemos filtrar seleccionando cada nivel.
[1] TRUE
[1] TRUE
tourism %>%
mutate_at(.vars = c("Region", "State", "Purpose"),
.funs = as_factor)
tourism %>%
as_tibble() %>%
group_by(Region, State, Purpose) %>%
summarise(Promedio = mean(Trips),
Desv_std = sd(Trips))
`summarise()` regrouping output by 'Region', 'State' (override with `.groups` argument)
tourism %>%
features(Trips, list(Media = mean,
SD = sd))
Calculamos la característica de la media y se muestra en la columna V1. Si queremos calcular varias características y nombrarlas, lo podemos hacer así:
tourism %>% features(Trips, list(media = mean,
desv_std = sd,
min = min,
mediana = median,
max = max)) %>%
arrange(desc(media))
Como hemos visto anteriormente, existen 5 estadísticas básicas que se deben analizar: el mínimo, primer cuartil, mediana, tercer cuartil y máximo. La función quantile() nos ayuda a calcularlas de manera sencilla:
tourism %>%
features(Trips, quantile, prob=seq(0, 1, by=0.25))
sueldo <- c(15000, 12000, 16000, 11000, 10000, 13000, 90000, 80000, 14000, 12000)
mean(sueldo)
[1] 27300
[1] 13500
quantile(sueldo, probs = seq(0,1, by = 0.25))
0% 25% 50% 75% 100%
10000 12000 13500 15750 90000
Características STL
Se puede definir la fuerza del componente de tendencia o estacional de la siguiente manera:
\[
F_{T} = \max \left(0,1-\frac{\operatorname{Var}\left(R_{t}\right)}{\operatorname{Var}\left(T_{t}+R_{t}\right)}\right)
\] Esto para el caso de la tendencia. Similarmente, para medir la fuerza del componente estacional:
\[
F_{S} = \max \left(0,1-\frac{\operatorname{Var}\left(R_{t}\right)}{\operatorname{Var}\left(S_{t}+R_{t}\right)}\right)
\] En ambos casos, lo que indican las ecuaciones es que la fuerza está medida entre cero y uno, siendo cero el indicador de nula o muy pequeña tendencia y/o estacionalidad, y valores cercanos a uno indicando una fuerte tendencia y/o estacionalidad.
Esto es útil cuando se quiere discernir cuáles series de tiempo tienen la mayor estacionalidad o tendencia. Otras características interesantes son las del tiempo de los picos y valles; qué mes o trimestre es el de mayor estacionalidad y cuál el de menor, p. ej.
Podemos obtener todas estas características con la función feat_stl().
tourism %>%
filter(Region == "Adelaide",
Purpose %in% c("Business", "Holiday")) %>%
autoplot() %>%
plotly::ggplotly()
Plot variable not specified, automatically selected `.vars = Trips`
tourism %>%
features(Trips, feat_stl)
LS0tDQp0aXRsZTogIkNhcmFjdGVyw61zdGljYXMgZGUgbGFzIHNlcmllcyBkZSB0aWVtcG8iDQphdXRob3I6ICJQYWJsbyBCZW5hdmlkZXMtSGVycmVyYSINCmRhdGU6IDIwMjAtMDQtMDENCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazoNCiAgICB0b2M6IHllcw0KICAgIHRvY19mbG9hdDogeWVzDQogICAgdGhlbWU6IHVuaXRlZA0KICAgIGhpZ2hsaWdodDogdGFuZ28NCiAgZ2l0aHViX2RvY3VtZW50Og0KICAgIHRvYzogeWVzDQogICAgZGV2OiBqcGVnDQphbHdheXNfYWxsb3dfaHRtbDogdHJ1ZQ0KLS0tDQoNCiFbXSguLi9pbWFnZXMvZmVhc3RzLnBuZykNCg0KRW4gZWwgcGFzYWRvLCB5YSBoZW1vcyByZXZpc2FkbyB2YXJpYXMgY2FyYWN0ZXLDrXN0aWNhcyBkZSBsYXMgc2VyaWVzIGRlIHRpZW1wby4gTGEgcGFxdWV0ZXLDrWEgW2BmZWFzdHNgXShodHRwczovL2ZlYXN0cy50aWR5dmVydHMub3JnLykgKigqKkYqKmVhdHVyZSAqKkUqKnh0cmFjdGlvbiAqKkEqKm5kICoqUyoqdGF0aXN0aWNzIGZyb20gKipUKippbWUgKipTKiplcmllcykqIGluY2x1eWUgdmFyaWFzIGZ1bmNpb25lcyBwYXJhIGNhbGN1bGFyIHZhcmlhcyBjYXJhY3RlcsOtc3RpY2FzLiBDdWFscXVpZXIgdGlwbyBkZSByZXN1bWVuIHF1ZSBsZSBwb2RhbW9zIHJlYWxpemFyIGEgdW5hIHNlcmllIGRlIHRpZW1wbyBzZSBjb25zaWRlcmFyw61hIHVuYSBjYXJhY3RlcsOtc3RpY2EuDQoNCiMjIyBDYXJhY3RlcsOtc3RpY2FzIGVzdGFkw61zdGljYXMgYsOhc2ljYXMNCg0KQWxndW5hcyBkZSBsYXMgbcOhcyBzZW5jaWxsYXMgc29uIGxhIG1lZGlhLCBtw61uaW1vLCBtw6F4aW1vLCAuLi4geSBsYXMgcG9kZW1vcyBjYWxjdWxhciB1dGlsaXphbmRvIGxhIGZ1bmNpw7NuIGBmZWF0dXJlcygpYC4gVG9tZW1vcyBkZSBlamVtcGxvIGxvcyBkYXRvcyBkZWwgdHVyaXNtbyBlbiBBdXN0cmFsaWEsIGB0b3VyaXNtYC4NCg0KYGBge3Igc3RhdCBmZWF0dXJlczEsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpsaWJyYXJ5KCJlYXN5cGFja2FnZXMiKQ0KcGFja2FnZXMoInRpZHl2ZXJzZSIsImx1YnJpZGF0ZSIsICJwYXRjaHdvcmsiLCAiZnBwMiIsImZwcDMiLCJzY2FsZXMiLCJEVCIpDQpnbGltcHNlKHRvdXJpc20pDQp0b3VyaXNtDQp0b3VyaXNtICU+JSBmZWF0dXJlcyhUcmlwcywgbGlzdChQcm9tZWRpbyA9IG1lYW4pKQ0KYGBgDQoNCioqKg0KTGEgcGFxdWV0ZXLDrWEgYERUYCBub3MgcGVybWl0ZSBjcmVhciBgZGF0YXRhYmxlc2AgbyB0YWJsYXMgaW50ZXJhY3RpdmFzLg0KDQpgYGB7cn0NCnRvdXJpc20gJT4lIA0KICBmZWF0dXJlcyhUcmlwcywgbGlzdChtZWFuID1tZWFuKSkgJT4lIA0KICBkYXRhdGFibGUoZmlsdGVyID0gInRvcCIpDQpgYGANCg0KU2kgdGVuZW1vcyB2YXJpYWJsZXMgY2F0ZWfDs3JpY2FzIChgZmFjdG9yc2ApLCBwb2RlbW9zIGZpbHRyYXIgc2VsZWNjaW9uYW5kbyBjYWRhIG5pdmVsLg0KDQpgYGB7cn0NCmlzLmNoYXJhY3RlcigiaG9sYSIpDQppcy5jaGFyYWN0ZXIoOCkNCg0KdG91cmlzbSAlPiUgDQogIG11dGF0ZSgNCiAgICBSZWdpb24gID0gYXNfZmFjdG9yKFJlZ2lvbiksDQogICAgU3RhdGUgICA9IGFzX2ZhY3RvcihTdGF0ZSksDQogICAgUHVycG9zZSA9IGFzX2ZhY3RvcihQdXJwb3NlKQ0KICApDQpgYGANCmBgYHtyfQ0KdG91cmlzbSAlPiUgDQogIG11dGF0ZV9hdCgudmFycyA9IGMoIlJlZ2lvbiIsICJTdGF0ZSIsICJQdXJwb3NlIiksDQogICAgICAgICAgICAuZnVucyA9IGFzX2ZhY3RvcikNCmBgYA0KDQoNCmBgYHtyfQ0KdG91cmlzbSAlPiUgDQogIG11dGF0ZV9pZihpcy5jaGFyYWN0ZXIsIGFzX2ZhY3RvcikgJT4lIA0KICBmZWF0dXJlcyhUcmlwcywgbGlzdChQcm9tZWRpbyA9IG1lYW4pKSAlPiUgDQogIGRhdGF0YWJsZShmaWx0ZXIgPSAidG9wIikNCmBgYA0KDQpgYGB7cn0NCnRvdXJpc20gJT4lIA0KICBhc190aWJibGUoKSAlPiUgDQogIGdyb3VwX2J5KFJlZ2lvbiwgU3RhdGUsIFB1cnBvc2UpICU+JSANCiAgc3VtbWFyaXNlKFByb21lZGlvID0gbWVhbihUcmlwcyksDQogICAgICAgICAgICBEZXN2X3N0ZCA9IHNkKFRyaXBzKSkNCg0KdG91cmlzbSAlPiUgDQogIGZlYXR1cmVzKFRyaXBzLCBsaXN0KE1lZGlhID0gbWVhbiwgDQogICAgICAgICAgICAgICAgICAgICAgIFNEICAgID0gc2QpKQ0KYGBgDQoNCg0KDQoqKioNCg0KQ2FsY3VsYW1vcyBsYSBjYXJhY3RlcsOtc3RpY2EgZGUgbGEgbWVkaWEgeSBzZSBtdWVzdHJhIGVuIGxhIGNvbHVtbmEgYFYxYC4gU2kgcXVlcmVtb3MgY2FsY3VsYXIgdmFyaWFzIGNhcmFjdGVyw61zdGljYXMgeSBub21icmFybGFzLCBsbyBwb2RlbW9zIGhhY2VyIGFzw606DQoNCmBgYHtyIHN0YXQgZmVhdHVyZXMyfQ0KdG91cmlzbSAlPiUgZmVhdHVyZXMoVHJpcHMsIGxpc3QobWVkaWEgICAgPSBtZWFuLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdl9zdGQgPSBzZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiAgICAgID0gbWluLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFuYSAgPSBtZWRpYW4sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXggICAgICA9IG1heCkpICU+JSANCiAgYXJyYW5nZShkZXNjKG1lZGlhKSkNCmBgYA0KDQpDb21vIGhlbW9zIHZpc3RvIGFudGVyaW9ybWVudGUsIGV4aXN0ZW4gNSBlc3RhZMOtc3RpY2FzIGLDoXNpY2FzIHF1ZSBzZSBkZWJlbiBhbmFsaXphcjogZWwgbcOtbmltbywgcHJpbWVyIGN1YXJ0aWwsIG1lZGlhbmEsIHRlcmNlciBjdWFydGlsIHkgbcOheGltby4gTGEgZnVuY2nDs24gYHF1YW50aWxlKClgIG5vcyBheXVkYSBhIGNhbGN1bGFybGFzIGRlIG1hbmVyYSBzZW5jaWxsYToNCg0KYGBge3IgUXVhcnRpbGUgZmVhdHVyZXN9DQp0b3VyaXNtICU+JSANCiAgZmVhdHVyZXMoVHJpcHMsIHF1YW50aWxlLCBwcm9iPXNlcSgwLCAxLCBieT0wLjI1KSkNCmBgYA0KDQpgYGB7cn0NCnN1ZWxkbyA8LSBjKDE1MDAwLCAxMjAwMCwgMTYwMDAsIDExMDAwLCAxMDAwMCwgMTMwMDAsIDkwMDAwLCA4MDAwMCwgMTQwMDAsIDEyMDAwKQ0KbWVhbihzdWVsZG8pDQptZWRpYW4oc3VlbGRvKQ0KcXVhbnRpbGUoc3VlbGRvLCBwcm9icyA9IHNlcSgwLDEsIGJ5ID0gMC4yNSkpDQpgYGANCg0KIyMjIENhcmFjdGVyw61zdGljYXMgZGUgbGEgZnVuY2nDs24gZGUgYXV0b2NvcnJlbGFjacOzbiwgQUNGDQoNCkxhIGZ1bmNpw7NuIGBmZWF0X2FjZigpYCBwcm92ZWUgY2FyYWN0ZXLDrXN0aWNhcyBpbnRlcmVzYW50ZXMgYWNlcmNhIGRlIHVuYSBzZXJpZSBkZSB0aWVtcG86DQoNCiogRWwgcHJpbWVyIGNvZWZpY2llbnRlIGRlIGF1dG9jb3JyZWxhY2nDs24gZGUgbG9zIGRhdG9zIG9yaWdpbmFsZXMsIGBhY2YxYC4NCiogTGEgc3VtYSBkZWwgY3VhZHJhZG8gZGUgbG9zIHByaW1lcm9zIDEwIGNvZWZpY2llbnRlcyBkZSBhdXRvY29ycmVsYWNpw7NuLCBkZSBsb3MgZGF0b3Mgb3JpZ2luYWxlcywgYGFjZjEwYC4gRXN0ZSBjb2VmaWNpZW50ZSBub3MgZGljZSBxdcOpIHRhbnRhIGF1dG9jb3JyZWxhY2nDs24gdGllbmUgbGEgc2VyaWUsIHNpbiBpbXBvcnRhciBlbCByZXphZ28uDQoqIEVsIHByaW1lciBjb2VmaWNpZW50ZSBkZSBhdXRvY29ycmVsYWNpw7NuIGRlIGxhcyBwcmltZXJhcyBkaWZlcmVuY2lhcywgYGRpZmYxX2FjZjFgLg0KKiBMYSBzdW1hIGRlbCBjdWFkcmFkbyBkZSBsb3MgcHJpbWVyb3MgMTAgY29lZmljaWVudGVzIGRlIGF1dG9jb3JyZWxhY2nDs24sIGRlIGxhcyBwcmltZXJhcyBkaWZlcmVuY2lhcywgYGRpZmYxX2FjZjEwYC4NCiogRWwgcHJpbWVyIGNvZWZpY2llbnRlIGRlIGF1dG9jb3JyZWxhY2nDs24gZGUgbGFzIHNlZ3VuZGFzIGRpZmVyZW5jaWFzLCBgZGlmZjJfYWNmMWAuDQoqIExhIHN1bWEgZGVsIGN1YWRyYWRvIGRlIGxvcyBwcmltZXJvcyAxMCBjb2VmaWNpZW50ZXMgZGUgYXV0b2NvcnJlbGFjacOzbiwgZGUgbGFzIHNlZ3VuZGFzIGRpZmVyZW5jaWFzLCBgZGlmZjJfYWNmMTBgLg0KKiBQYXJhIGRhdG9zIGVzdGFjaW9uYWxlcywgdGFtYmnDqW4gc2Ugb2J0aWVuZSBlbCBjb2VmaWNpZW50ZSBkZSBhdXRvY29ycmVsYWNpw7NuIGVuIGVsIHByaW1lciByZXphZ28gZXN0YWNpb25hbC4NCg0KYGBge3IgQUNGIGZlYXR1cmVzfQ0KdG91cmlzbSAlPiUgZmVhdHVyZXMoVHJpcHMsIGZlYXRfYWNmKQ0KYGBgDQojIyMgQ2FyYWN0ZXLDrXN0aWNhcyBTVEwNCg0KU2UgcHVlZGUgZGVmaW5pciBsYSAqKmZ1ZXJ6YSBkZWwgY29tcG9uZW50ZSBkZSB0ZW5kZW5jaWEgbyBlc3RhY2lvbmFsKiogZGUgbGEgc2lndWllbnRlIG1hbmVyYToNCg0KJCQNCkZfe1R9ID0gXG1heCBcbGVmdCgwLDEtXGZyYWN7XG9wZXJhdG9ybmFtZXtWYXJ9XGxlZnQoUl97dH1ccmlnaHQpfXtcb3BlcmF0b3JuYW1le1Zhcn1cbGVmdChUX3t0fStSX3t0fVxyaWdodCl9XHJpZ2h0KQ0KJCQNCkVzdG8gcGFyYSBlbCBjYXNvIGRlIGxhIHRlbmRlbmNpYS4gU2ltaWxhcm1lbnRlLCBwYXJhIG1lZGlyIGxhIGZ1ZXJ6YSBkZWwgY29tcG9uZW50ZSBlc3RhY2lvbmFsOg0KDQokJA0KRl97U30gPSBcbWF4IFxsZWZ0KDAsMS1cZnJhY3tcb3BlcmF0b3JuYW1le1Zhcn1cbGVmdChSX3t0fVxyaWdodCl9e1xvcGVyYXRvcm5hbWV7VmFyfVxsZWZ0KFNfe3R9K1Jfe3R9XHJpZ2h0KX1ccmlnaHQpDQokJA0KRW4gYW1ib3MgY2Fzb3MsIGxvIHF1ZSBpbmRpY2FuIGxhcyBlY3VhY2lvbmVzIGVzIHF1ZSBsYSBmdWVyemEgZXN0w6EgbWVkaWRhIGVudHJlIGNlcm8geSB1bm8sIHNpZW5kbyBjZXJvIGVsIGluZGljYWRvciBkZSBudWxhIG8gbXV5IHBlcXVlw7FhIHRlbmRlbmNpYSB5L28gZXN0YWNpb25hbGlkYWQsIHkgdmFsb3JlcyBjZXJjYW5vcyBhIHVubyBpbmRpY2FuZG8gdW5hIGZ1ZXJ0ZSB0ZW5kZW5jaWEgeS9vIGVzdGFjaW9uYWxpZGFkLg0KDQpFc3RvIGVzIMO6dGlsIGN1YW5kbyBzZSBxdWllcmUgZGlzY2VybmlyIGN1w6FsZXMgc2VyaWVzIGRlIHRpZW1wbyB0aWVuZW4gbGEgbWF5b3IgZXN0YWNpb25hbGlkYWQgbyB0ZW5kZW5jaWEuIE90cmFzIGNhcmFjdGVyw61zdGljYXMgaW50ZXJlc2FudGVzIHNvbiBsYXMgZGVsIHRpZW1wbyBkZSBsb3MgcGljb3MgeSB2YWxsZXM7IHF1w6kgbWVzIG8gdHJpbWVzdHJlIGVzIGVsIGRlIG1heW9yIGVzdGFjaW9uYWxpZGFkIHkgY3XDoWwgZWwgZGUgbWVub3IsIHAuIGVqLg0KDQpQb2RlbW9zIG9idGVuZXIgdG9kYXMgZXN0YXMgY2FyYWN0ZXLDrXN0aWNhcyBjb24gbGEgZnVuY2nDs24gYGZlYXRfc3RsKClgLg0KDQpgYGB7ciBTVEwgZmVhdHVyZXN9DQp0b3VyaXNtICU+JSANCiAgZmlsdGVyKFJlZ2lvbiAgPT0gIkFkZWxhaWRlIiwNCiAgICAgICAgIFB1cnBvc2UgJWluJSBjKCJCdXNpbmVzcyIsICJIb2xpZGF5IikpICU+JSANCiAgYXV0b3Bsb3QoKSAlPiUgDQogIHBsb3RseTo6Z2dwbG90bHkoKQ0KdG91cmlzbSAlPiUNCiAgZmVhdHVyZXMoVHJpcHMsIGZlYXRfc3RsKQ0KYGBgDQo=